package club.service;

import club.pojo.User;

import club.pojo.User;
import com.github.pagehelper.PageInfo;


import java.util.List;

public interface UserService {

    /**
     * 根据用户名和状态查询用户列表
     *
     * @param userName 用户名，用于模糊查询
     * @param state    用户状态，可选，用于筛选特定状态的用户
     * @return 符合条件的用户列表
     */
    List<User> findByName(String userName, Integer state);

    /**
     * 根据用户名查询用户列表
     *
     * @param userName 用户名，用于模糊查询
     * @return 符合条件的用户列表
     */
    List<User> showName(String userName);

    /**
     * 用户登录验证
     *
     * @param userName 用户名
     * @param password 密码
     * @return 登录成功的用户对象，若登录失败则返回null
     */
    User loginuser(String userName, String password);

    /**
     * 注册新用户
     *
     * @param user 待注册的用户对象
     * @return 注册成功后的用户ID
     */
    int add(User user);

    /**
     * 修改用户信息
     *
     * @param user 待修改的用户对象
     * @return 修改操作影响的行数，通常为1
     */
    Integer update(User user);

    /**
     * 根据ID查找用户信息
     *
     * @param id 用户ID
     * @return 对应ID的用户信息，若不存在则返回null
     */
    User findById(Integer id);

    /**
     * 查询所有用户并分页显示
     *
     * @param userName 用户名，可选，用于筛选特定用户名的用户
     * @param pageNum  当前页码
     * @param pageSize 每页显示条数
     * @return 分页后的用户列表
     */
    PageInfo<User> allUser(String userName, Integer pageNum, Integer pageSize);

    /**
     * 删除指定ID的用户
     *
     * @param id 待删除用户的ID
     * @return 删除操作影响的行数，通常为1
     */
    int del(Integer id);
}

